PageSourceSearch

https://charluv.com/assets/SubscriptionList-C-4-_1lN.js

js charluv.com collected 2026-10-02 01:26:00 UTC 11,497 bytes, 269 lines download raw bytes

1import { aB as setComponentPageTitle, u as useNavigate, aP as presetStore, aV as getServiceName, aW as sortByLabel, b as userStore, f as createSignal, o as onMount, c as createComponent, az as PageHeader, A, i as insert, B as Button, ag as Plus, d as Show, F as For, aX as SolidCard, h as memo, aE as adminStore, aA as Divider, an as Trash, aH as ConfirmModal, aD as Page, t as template, aL as Pill } from "./index-BhA_zdKR.js";
2import { C as Copy } from "./Copy.esm-yeHNsHT3.js";
3var _tmpl$ = /* @__PURE__ */ template(`<div class="mb-4 flex w-full justify-end gap-2">`), _tmpl$2 = /* @__PURE__ */ template(`<div class="flex justify-center text-xl font-bold">No Tiers`), _tmpl$3 = /* @__PURE__ */ template(`<div class="flex justify-center text-xl font-bold">Tiers`), _tmpl$4 = /* @__PURE__ */ template(`<div class="flex w-full flex-col gap-2">`), _tmpl$5 = /* @__PURE__ */ template(`<div class="flex flex-col items-center gap-2"><div class="flex justify-center font-bold">Models`), _tmpl$6 = /* @__PURE__ */ template(`<span class="text-600 ml-2 text-xs italic">Stripe: $`), _tmpl$7 = /* @__PURE__ */ template(`<span class="text-600 ml-2 text-xs italic">Patreon: $`), _tmpl$8 = /* @__PURE__ */ template(`<span class="text-600 ml-2 text-xs italic">disabled`), _tmpl$9 = /* @__PURE__ */ template(`<div class="flex w-full gap-2"><div class="flex min-w-fit gap-2">`), _tmpl$0 = /* @__PURE__ */ template(`<span class="text-500 ml-1 text-xs">`), _tmpl$1 = /* @__PURE__ */ template(`<div class="ml-4 flex w-full items-center"><div class="flex gap-1"><span class="mr-1 text-xs italic text-[var(--text-600)]">[Level: <!>] </span><span class="mr-1 text-xs italic text-[var(--text-600)]">`), _tmpl$10 = /* @__PURE__ */ template(`<div class="flex w-full items-center gap-2">`);
4const SubscriptionList = () => {
5  setComponentPageTitle("Subscriptions");
6  const nav = useNavigate();
7  const state = presetStore((s) => {
8    return {
9      enabled: s.subs.filter((s2) => !s2.subDisabled).map((pre) => ({
10        ...pre,
11        label: `[${getServiceName(pre.service)}] ${pre.name}`
12      })).sort(sortByLabel),
13      disabled: s.subs.filter((s2) => s2.subDisabled).map((pre) => ({
14        ...pre,
15        label: `[${getServiceName(pre.service)}] ${pre.name}`
16      })).sort(sortByLabel)
17    };
18  });
19  const cfg = userStore();
20  const [deleting, setDeleting] = createSignal();
21  const deleteSub = () => {
22    const presetId = deleting();
23    if (!presetId) return;
24    presetStore.deleteSubscription(presetId, () => nav("/admin/subscriptions"));
25    setDeleting();
26  };
27  onMount(() => {
28    presetStore.getSubscriptions();
29    userStore.getTiers();
30  });
31  return createComponent(Page, {
32    get children() {
33      return [createComponent(PageHeader, {
34        title: "Subscriptions"
35      }), createComponent(A, {
36        href: "/admin/metrics",
37        "class": "link",
38        children: "← Back to Manage"
39      }), (() => {
40        var _el$ = _tmpl$();
41        insert(_el$, createComponent(A, {
42          href: "/admin/tiers/new",
43          get children() {
44            return createComponent(Button, {
45              get children() {
46                return [createComponent(Plus, {}), "Tier"];
47              }
48            });
49          }
50        }), null);
51        insert(_el$, createComponent(A, {
52          href: "/admin/subscriptions/new",
53          get children() {
54            return createComponent(Button, {
55              get children() {
56                return [createComponent(Plus, {}), "Model"];
57              }
58            });
59          }
60        }), null);
61        return _el$;
62      })(), (() => {
63        var _el$2 = _tmpl$5(), _el$6 = _el$2.firstChild;
64        insert(_el$2, createComponent(Show, {
65          get when() {
66            return cfg.tiers.length === 0;
67          },
68          get children() {
69            return _tmpl$2();
70          }
71        }), _el$6);
72        insert(_el$2, createComponent(Show, {
73          get when() {
74            return cfg.tiers.length > 0;
75          },
76          get children() {
77            return [_tmpl$3(), (() => {
78              var _el$5 = _tmpl$4();
79              insert(_el$5, createComponent(For, {
80                get each() {
81                  return cfg.tiers;
82                },
83                children: (each) => (() => {
84                  var _el$7 = _tmpl$9(), _el$11 = _el$7.firstChild;
85                  insert(_el$7, createComponent(A, {
86                    get href() {
87                      return `/admin/tiers/${each._id}`;
88                    },
89                    "class": "w-full",
90                    get children() {
91                      return createComponent(SolidCard, {
92                        get bg() {
93                          return each.enabled ? "bg-800" : "rose-900";
94                        },
95                        hover: "bg-700",
96                        "class": "w-full cursor-pointer",
97                        get children() {
98                          return [memo(() => each.name), createComponent(Show, {
99                            get when() {
100                              return each.cost > 0 && !!each.priceId;
101                            },
102                            get children() {
103                              var _el$8 = _tmpl$6();
104                              _el$8.firstChild;
105                              insert(_el$8, () => each.cost / 100, null);
106                              return _el$8;
107                            }
108                          }), createComponent(Show, {
109                            get when() {
110                              return each.patreon?.cost > 0;
111                            },
112                            get children() {
113                              var _el$0 = _tmpl$7();
114                              _el$0.firstChild;
115                              insert(_el$0, () => (each.patreon?.cost / 100).toFixed(2), null);
116                              return _el$0;
117                            }
118                          }), createComponent(Show, {
119                            get when() {
120                              return !each.enabled;
121                            },
122                            get children() {
123                              return _tmpl$8();
124                            }
125                          })];
126                        }
127                      });
128                    }
129                  }), _el$11);
130                  insert(_el$11, createComponent(Show, {
131                    get when() {
132                      return each.enabled;
133                    },
134                    get children() {
135                      return createComponent(Button, {
136                        schema: "green",
137                        onClick: () => adminStore.updateTier(each._id, {
138                          enabled: false
139                        }),
140                        children: "Enabled"
141                      });
142                    }
143                  }), null);
144                  insert(_el$11, createComponent(Show, {
145                    get when() {
146                      return !each.enabled;
147                    },
148                    get children() {
149                      return createComponent(Button, {
150                        schema: "red",
151                        onClick: () => adminStore.updateTier(each._id, {
152                          enabled: true
153                        }),
154                        children: "Disabled"
155                      });
156                    }
157                  }), null);
158                  return _el$7;
159                })()
160              }));
161              return _el$5;
162            })()];
163          }
164        }), _el$6);
165        insert(_el$2, createComponent(Divider, {}), _el$6);
166        insert(_el$2, createComponent(For, {
167          get each() {
168            return state.enabled.concat(state.disabled);
169          },
170          children: (sub) => (() => {
171            var _el$12 = _tmpl$10();
172            insert(_el$12, createComponent(A, {
173              get href() {
174                return `/admin/subscriptions/${sub._id}`;
175              },
176              "class": "flex h-12 w-full gap-2 rounded-xl hover:bg-[var(--bg-600)]",
177              get classList() {
178                return {
179                  "bg-red-900": sub.subDisabled && !sub.isDefaultSub,
180                  "text-500": sub.subDisabled && !sub.isDefaultSub,
181                  "bg-800": !sub.subDisabled && !sub.isDefaultSub,
182                  "bg-[var(--hl-800)]": sub.isDefaultSub
183                };
184              },
185              get children() {
186                var _el$13 = _tmpl$1(), _el$14 = _el$13.firstChild, _el$15 = _el$14.firstChild, _el$16 = _el$15.firstChild, _el$18 = _el$16.nextSibling;
187                _el$18.nextSibling;
188                var _el$20 = _el$15.nextSibling;
189                insert(_el$15, () => sub.subLevel, _el$18);
190                insert(_el$15, () => getServiceName(sub.service), null);
191                insert(_el$14, () => sub.name, _el$20);
192                insert(_el$14, createComponent(Show, {
193                  get when() {
194                    return sub.description;
195                  },
196                  get children() {
197                    var _el$19 = _tmpl$0();
198                    insert(_el$19, () => sub.description);
199                    return _el$19;
200                  }
201                }), _el$20);
202                insert(_el$20, () => sub.isDefaultSub ? " default" : "", null);
203                insert(_el$20, () => sub.subDisabled ? " (disabled)" : "", null);
204                insert(_el$14, createComponent(Contexts, {
205                  get levels() {
206                    return [{
207                      level: sub.subLevel,
208                      maxContextLength: sub.maxContextLength,
209                      maxTokens: sub.maxTokens
210                    }];
211                  }
212                }), null);
213                insert(_el$14, createComponent(Contexts, {
214                  get levels() {
215                    return sub.levels || [];
216                  }
217                }), null);
218                return _el$13;
219              }
220            }), null);
221            insert(_el$12, createComponent(Button, {
222              schema: "clear",
223              size: "sm",
224              onClick: () => nav(`/admin/subscriptions/new?preset=${sub._id}`),
225              "class": "icon-button",
226              get children() {
227                return createComponent(Copy, {});
228              }
229            }), null);
230            insert(_el$12, createComponent(Button, {
231              schema: "clear",
232              size: "sm",
233              onClick: () => setDeleting(sub._id),
234              "class": "icon-button",
235              get children() {
236                return createComponent(Trash, {});
237              }
238            }), null);
239            return _el$12;
240          })()
241        }), null);
242        return _el$2;
243      })(), createComponent(ConfirmModal, {
244        get show() {
245          return !!deleting();
246        },
247        close: () => setDeleting(),
248        confirm: deleteSub,
249        message: "Are you sure you wish to delete this subscription?"
250      })];
251    }
252  });
253};
254const Contexts = (props) => {
255  return createComponent(For, {
256    get each() {
257      return props.levels;
258    },
259    children: (level) => createComponent(Pill, {
260      small: true,
261      get children() {
262        return [memo(() => level.level), ". ", memo(() => level.maxContextLength), " / ", memo(() => level.maxTokens)];
263      }
264    })
265  });
266};
267export {
268  SubscriptionList as default
269};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.